﻿using System;
using System.Collections.Generic;
using System.Runtime.Caching;
namespace EP.Caching.Providers {
	public interface ICacheProvider {
		TimeSpan? SlidingTimeout { get; set; }

		bool SupportsAbsoluteTimeout { get; }
		DateTimeOffset? AbsoluteTimeout { get; set; }

		bool SupportsChangeMonitors { get; }
		IList<ChangeMonitor> Monitors { get; }

		void Add<T>(string key, T value);

		bool Contains(string key);

		object Get(string key);
		T Get<T>(string key) where T : class, IConvertible;

		void Remove(string key);
	}
}
